說到台灣常見的 NFC 卡片,Mifare Classic 1k 絕對是榜上有名,因為舊版的悠遊卡、一卡通都是使用這種卡片,今天的文章就讓筆者來介紹這種卡片吧。
Mifare Classic 1k 卡,簡稱 M1 或 S50 卡,是非接觸式智慧卡的一種,這種卡片採用 ISO 14443A 的規範,通訊頻率是高頻 (13.56 MHz),卡片內部有 1024 Bytes 的資料,也是在 ChameleonUltra 硬體上最早支援模擬的卡片種類。
你的智慧型手機 (Android) 可以辨識大多數高頻 (13.56 MHz) 卡,除了智慧型手機之外,在你身邊應該有不少支援這種卡片的讀卡機,在此筆者以 Android 的 NFC TagInfo 進行辨識。這類卡片在沒有使用密碼的情況下,可以讀到 UID、ATQA、SAK 等資訊(這些是卡片的公開資訊),通常如果看到 ATQA=0004, SAK=08
或是 ATQA=0004, SAK=88
的話就是 Mifare Classic 1k 卡片。
Mifare Classic 1k 卡片總共有 1024 Bytes;卡片總共被分成 16 個 Sectors,每個 Sector 有 64 Bytes;每個 Sector 又被分成 4 個 Blocks,每個 Block 有 16 Bytes。
每個 Sector 的 0-2 個 Block 是資料區塊 (Data block),可以用來存放資料,每個 Sector 的第 3 個 Block 是控制區塊 (Control block),用來存放存取控制資料,裡面有 Sector Key A、Sector Key B 及存取權限。
Data block 還可以被設定成特殊的 Value block,可以用來存放 32 位元的有號整數,值區域會對整數進行備份,避免資料發生錯誤,並且會有額外四個指令:遞增、遞減、備份、還原可以執行。
存取權限的部分在修改前,通常會建議直接透過一些工具直接計算權限(搜尋 MIFARE Classic 1K Access Bits Calculator 就能找到),避免不小心設定錯誤導致整個 Block 資料被鎖死(俗稱變磚)。
第 0 個 Sector 的第 0 個 Block 是特殊的 Block,被規劃成製造商區塊 (Manufacturer block),這個區塊會在製造時寫入一個唯讀的資料,通常用來存放卡片的 UID 及製造商資料。
如果想要了解更多,可以參考筆者自己之前寫過的文章,連結放在下方參考資料內。